home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Developer Toolbox 6.1
/
SGI Developer Toolbox 6.1 - Disc 1.iso
/
toolbox
/
src
/
exampleCode
/
opengl
/
GLUT
/
progs
/
demos
/
ideas
/
draw_holder.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-11-11
|
48KB
|
1,361 lines
/*
* (c) Copyright 1993, Silicon Graphics, Inc.
* ALL RIGHTS RESERVED
* Permission to use, copy, modify, and distribute this software for
* any purpose and without fee is hereby granted, provided that the above
* copyright notice appear in all copies and that both the copyright notice
* and this permission notice appear in supporting documentation, and that
* the name of Silicon Graphics, Inc. not be used in advertising
* or publicity pertaining to distribution of the software without specific,
* written prior permission.
*
* THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
* AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
* FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
* GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
* SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
* KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
* LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
* THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
* ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
* POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
*
* US Government Users Restricted Rights
* Use, duplication, or disclosure by the Government is subject to
* restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
* (c)(1)(ii) of the Rights in Technical Data and Computer Software
* clause at DFARS 252.227-7013 and/or in similar or successor
* clauses in the FAR or the DOD or NASA FAR Supplement.
* Unpublished-- rights reserved under the copyright laws of the
* United States. Contractor/manufacturer is Silicon Graphics,
* Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
*
* OpenGL(TM) is a trademark of Silicon Graphics, Inc.
*/
#include <GL/glut.h>
#include "objects.h"
float bn[5][3] = {
{-1.0, 0.0, 0.0},
{0.0, 1.0, 0.0},
{1.0, 0.0, 0.0},
{0.0, -1.0, 0.0},
{0.0, 0.0, 1.0},
};
float bp[4][8][3] = {
{
{-14.000000, -14.000000, 0.000000},
{-14.000000, -14.000000, 4.000000},
{-14.000000, 14.000000, 0.000000},
{-14.000000, 14.000000, 4.000000},
{14.000000, 14.000000, 0.000000},
{14.000000, 14.000000, 4.000000},
{14.000000, -14.000000, 0.000000},
{14.000000, -14.000000, 4.000000},
},
{
{-12.000000, -12.000000, 4.000000},
{-12.000000, -12.000000, 8.000000},
{-12.000000, 12.000000, 4.000000},
{-12.000000, 12.000000, 8.000000},
{12.000000, 12.000000, 4.000000},
{12.000000, 12.000000, 8.000000},
{12.000000, -12.000000, 4.000000},
{12.000000, -12.000000, 8.000000},
},
{
{-10.000000, -10.000000, 8.000000},
{-10.000000, -10.000000, 12.000000},
{-10.000000, 10.000000, 8.000000},
{-10.000000, 10.000000, 12.000000},
{10.000000, 10.000000, 8.000000},
{10.000000, 10.000000, 12.000000},
{10.000000, -10.000000, 8.000000},
{10.000000, -10.000000, 12.000000},
},
{
{-8.000000, -8.000000, 12.000000},
{-8.000000, -8.000000, 8.000000},
{-8.000000, 8.000000, 12.000000},
{-8.000000, 8.000000, 8.000000},
{8.000000, 8.000000, 12.000000},
{8.000000, 8.000000, 8.000000},
{8.000000, -8.000000, 12.000000},
{8.000000, -8.000000, 8.000000},
},
};
float tp[12][21][3] = {
{
{10.000000, 0.000000, 1.000000},
{9.510565, -3.090170, 1.000000},
{8.090170, -5.877852, 1.000000},
{5.877852, -8.090170, 1.000000},
{3.090170, -9.510565, 1.000000},
{0.000000, -10.000000, 1.000000},
{-3.090170, -9.510565, 1.000000},
{-5.877852, -8.090170, 1.000000},
{-8.090170, -5.877852, 1.000000},
{-9.510565, -3.090170, 1.000000},
{-10.000000, 0.000000, 1.000000},
{-9.510565, 3.090170, 1.000000},
{-8.090170, 5.877852, 1.000000},
{-5.877852, 8.090170, 1.000000},
{-3.090170, 9.510565, 1.000000},
{0.000000, 10.000000, 1.000000},
{3.090170, 9.510565, 1.000000},
{5.877852, 8.090170, 1.000000},
{8.090170, 5.877852, 1.000000},
{9.510565, 3.090170, 1.000000},
{10.000000, 0.000000, 1.000000},
},
{
{10.540641, 0.000000, 0.841254},
{10.024745, -3.257237, 0.841254},
{8.527557, -6.195633, 0.841254},
{6.195633, -8.527557, 0.841254},
{3.257237, -10.024745, 0.841254},
{0.000000, -10.540641, 0.841254},
{-3.257237, -10.024745, 0.841254},
{-6.195633, -8.527557, 0.841254},
{-8.527557, -6.195633, 0.841254},
{-10.024745, -3.257237, 0.841254},
{-10.540641, 0.000000, 0.841254},
{-10.024745, 3.257237, 0.841254},
{-8.527557, 6.195633, 0.841254},
{-6.195633, 8.527557, 0.841254},
{-3.257237, 10.024745, 0.841254},
{0.000000, 10.540641, 0.841254},
{3.257237, 10.024745, 0.841254},
{6.195633, 8.527557, 0.841254},
{8.527557, 6.195633, 0.841254},
{10.024745, 3.257237, 0.841254},
{10.540641, 0.000000, 0.841254},
},
{
{10.909632, 0.000000, 0.415415},
{10.375676, -3.371262, 0.415415},
{8.826077, -6.412521, 0.415415},
{6.412521, -8.826077, 0.415415},
{3.371262, -10.375676, 0.415415},
{0.000000, -10.909632, 0.415415},
{-3.371262, -10.375676, 0.415415},
{-6.412521, -8.826077, 0.415415},
{-8.826077, -6.412521, 0.415415},
{-10.375676, -3.371262, 0.415415},
{-10.909632, 0.000000, 0.415415},
{-10.375676, 3.371262, 0.415415},
{-8.826077, 6.412521, 0.415415},
{-6.412521, 8.826077, 0.415415},
{-3.371262, 10.375676, 0.415415},
{0.000000, 10.909632, 0.415415},
{3.371262, 10.375676, 0.415415},
{6.412521, 8.826077, 0.415415},
{8.826077, 6.412521, 0.415415},
{10.375676, 3.371262, 0.415415},
{10.909632, 0.000000, 0.415415},
},
{
{10.989821, 0.000000, -0.142315},
{10.451941, -3.396042, -0.142315},
{8.890952, -6.459655, -0.142315},
{6.459655, -8.890952, -0.142315},
{3.396042, -10.451941, -0.142315},
{0.000000, -10.989821, -0.142315},
{-3.396042, -10.451941, -0.142315},
{-6.459655, -8.890952, -0.142315},
{-8.890952, -6.459655, -0.142315},
{-10.451941, -3.396042, -0.142315},
{-10.989821, 0.000000, -0.142315},
{-10.451941, 3.396042, -0.142315},
{-8.890952, 6.459655, -0.142315},
{-6.459655, 8.890952, -0.142315},
{-3.396042, 10.451941, -0.142315},
{0.000000, 10.989821, -0.142315},
{3.396042, 10.451941, -0.142315},
{6.459655, 8.890952, -0.142315},
{8.890952, 6.459655, -0.142315},
{10.451941, 3.396042, -0.142315},
{10.989821, 0.000000, -0.142315},
},
{
{10.755750, 0.000000, -0.654861},
{10.229325, -3.323709, -0.654861},
{8.701584, -6.322071, -0.654861},
{6.322071, -8.701584, -0.654861},
{3.323709, -10.229325, -0.654861},
{0.000000, -10.755750, -0.654861},
{-3.323709, -10.229325, -0.654861},
{-6.322071, -8.701584, -0.654861},
{-8.701584, -6.322071, -0.654861},
{-10.229325, -3.323709, -0.654861},
{-10.755750, 0.000000, -0.654861},
{-10.229325, 3.323709, -0.654861},
{-8.701584, 6.322071, -0.654861},
{-6.322071, 8.701584, -0.654861},
{-3.323709, 10.229325, -0.654861},
{0.000000, 10.755750, -0.654861},
{3.323709, 10.229325, -0.654861},
{6.322071, 8.701584, -0.654861},
{8.701584, 6.322071, -0.654861},
{10.229325, 3.323709, -0.654861},
{10.755750, 0.000000, -0.654861},
},
{
{10.281733, 0.000000, -0.959493},
{9.778509, -3.177230, -0.959493},
{8.318096, -6.043451, -0.959493},
{6.043451, -8.318096, -0.959493},
{3.177230, -9.778509, -0.959493},
{0.000000, -10.281733, -0.959493},
{-3.177230, -9.778509, -0.959493},
{-6.043451, -8.318096, -0.959493},
{-8.318096, -6.043451, -0.959493},
{-9.778509, -3.177230, -0.959493},
{-10.281733, 0.000000, -0.959493},
{-9.778509, 3.177230, -0.959493},
{-8.318096, 6.043451, -0.959493},
{-6.043451, 8.318096, -0.959493},
{-3.177230, 9.778509, -0.959493},
{0.000000, 10.281733, -0.959493},
{3.177230, 9.778509, -0.959493},
{6.043451, 8.318096, -0.959493},
{8.318096, 6.043451, -0.959493},
{9.778509, 3.177230, -0.959493},
{10.281733, 0.000000, -0.959493},
},
{
{9.718267, 0.000000, -0.959493},
{9.242621, -3.003110, -0.959493},
{7.862244, -5.712255, -0.959493},
{5.712255, -7.862244, -0.959493},
{3.003110, -9.242621, -0.959493},
{0.000000, -9.718267, -0.959493},
{-3.003110, -9.242621, -0.959493},
{-5.712255, -7.862244, -0.959493},
{-7.862244, -5.712255, -0.959493},
{-9.242621, -3.003110, -0.959493},
{-9.718267, 0.000000, -0.959493},
{-9.242621, 3.003110, -0.959493},
{-7.862244, 5.712255, -0.959493},
{-5.712255, 7.862244, -0.959493},
{-3.003110, 9.242621, -0.959493},
{0.000000, 9.718267, -0.959493},
{3.003110, 9.242621, -0.959493},
{5.712255, 7.862244, -0.959493},
{7.862244, 5.712255, -0.959493},
{9.242621, 3.003110, -0.959493},
{9.718267, 0.000000, -0.959493},
},
{
{9.244250, 0.000000, -0.654861},
{8.791805, -2.856631, -0.654861},
{7.478756, -5.433634, -0.654861},
{5.433634, -7.478756, -0.654861},
{2.856631, -8.791805, -0.654861},
{0.000000, -9.244250, -0.654861},
{-2.856631, -8.791805, -0.654861},
{-5.433634, -7.478756, -0.654861},
{-7.478756, -5.433634, -0.654861},
{-8.791805, -2.856631, -0.654861},
{-9.244250, 0.000000, -0.654861},
{-8.791805, 2.856631, -0.654861},
{-7.478756, 5.433634, -0.654861},
{-5.433634, 7.478756, -0.654861},
{-2.856631, 8.791805, -0.654861},
{0.000000, 9.244250, -0.654861},
{2.856631, 8.791805, -0.654861},
{5.433634, 7.478756, -0.654861},
{7.478756, 5.433634, -0.654861},
{8.791805, 2.856631, -0.654861},
{9.244250, 0.000000, -0.654861},
},
{
{9.010179, 0.000000, -0.142315},
{8.569189, -2.784298, -0.142315},
{7.289388, -5.296050, -0.142315},
{5.296050, -7.289388, -0.142315},
{2.784298, -8.569189, -0.142315},
{0.000000, -9.010179, -0.142315},
{-2.784298, -8.569189, -0.142315},
{-5.296050, -7.289388, -0.142315},
{-7.289388, -5.296050, -0.142315},
{-8.569189, -2.784298, -0.142315},
{-9.010179, 0.000000, -0.142315},
{-8.569189, 2.784298, -0.142315},
{-7.289388, 5.296050, -0.142315},
{-5.296050, 7.289388, -0.142315},
{-2.784298, 8.569189, -0.142315},
{0.000000, 9.010179, -0.142315},
{2.784298, 8.569189, -0.142315},
{5.296050, 7.289388, -0.142315},
{7.289388, 5.296050, -0.142315},
{8.569189, 2.784298, -0.142315},
{9.010179, 0.000000, -0.142315},
},
{
{9.090367, 0.000000, 0.415414},
{8.645453, -2.809078, 0.415414},
{7.354262, -5.343184, 0.415414},
{5.343184, -7.354262, 0.415414},
{2.809078, -8.645453, 0.415414},
{0.000000, -9.090367, 0.415414},
{-2.809078, -8.645453, 0.415414},
{-5.343184, -7.354262, 0.415414},
{-7.354262, -5.343184, 0.415414},
{-8.645453, -2.809078, 0.415414},
{-9.090367, 0.000000, 0.415414},
{-8.645453, 2.809078, 0.415414},
{-7.354262, 5.343184, 0.415414},
{-5.343184, 7.354262, 0.415414},
{-2.809078, 8.645453, 0.415414},
{0.000000, 9.090367, 0.415414},
{2.809078, 8.645453, 0.415414},
{5.343184, 7.354262, 0.415414},
{7.354262, 5.343184, 0.415414},
{8.645453, 2.809078, 0.415414},
{9.090367, 0.000000, 0.415414},
},
{
{9.459358, 0.000000, 0.841253},
{8.996385, -2.923103, 0.841253},
{7.652781, -5.560071, 0.841253},
{5.560071, -7.652781, 0.841253},
{2.923103, -8.996385, 0.841253},
{0.000000, -9.459358, 0.841253},
{-2.923103, -8.996385, 0.841253},
{-5.560071, -7.652781, 0.841253},
{-7.652781, -5.560071, 0.841253},
{-8.996385, -2.923103, 0.841253},
{-9.459358, 0.000000, 0.841253},
{-8.996385, 2.923103, 0.841253},
{-7.652781, 5.560071, 0.841253},
{-5.560071, 7.652781, 0.841253},
{-2.923103, 8.996385, 0.841253},
{0.000000, 9.459358, 0.841253},
{2.923103, 8.996385, 0.841253},
{5.560071, 7.652781, 0.841253},
{7.652781, 5.560071, 0.841253},
{8.996385, 2.923103, 0.841253},
{9.459358, 0.000000, 0.841253},
},
{
{9.999999, 0.000000, 1.000000},
{9.510564, -3.090170, 1.000000},
{8.090169, -5.877852, 1.000000},
{5.877852, -8.090169, 1.000000},
{3.090170, -9.510564, 1.000000},
{0.000000, -9.999999, 1.000000},
{-3.090170, -9.510564, 1.000000},
{-5.877852, -8.090169, 1.000000},
{-8.090169, -5.877852, 1.000000},
{-9.510564, -3.090170, 1.000000},
{-9.999999, 0.000000, 1.000000},
{-9.510564, 3.090170, 1.000000},
{-8.090169, 5.877852, 1.000000},
{-5.877852, 8.090169, 1.000000},
{-3.090170, 9.510564, 1.000000},
{0.000000, 9.999999, 1.000000},
{3.090170, 9.510564, 1.000000},
{5.877852, 8.090169, 1.000000},
{8.090169, 5.877852, 1.000000},
{9.510564, 3.090170, 1.000000},
{9.999999, 0.000000, 1.000000},
},
};
float tn[12][21][3] = {
{
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
{0.000000, 0.000000, 1.000000},
},
{
{0.540641, 0.000000, 0.841254},
{0.514180, -0.167067, 0.841254},
{0.437388, -0.317781, 0.841254},
{0.317781, -0.437388, 0.841254},
{0.167067, -0.514180, 0.841254},
{0.000000, -0.540641, 0.841254},
{-0.167067, -0.514180, 0.841254},
{-0.317781, -0.437388, 0.841254},
{-0.437388, -0.317781, 0.841254},
{-0.514180, -0.167067, 0.841254},
{-0.540641, 0.000000, 0.841254},
{-0.514180, 0.167067, 0.841254},
{-0.437388, 0.317781, 0.841254},
{-0.317781, 0.437388, 0.841254},
{-0.167067, 0.514180, 0.841254},
{0.000000, 0.540641, 0.841254},
{0.167067, 0.514180, 0.841254},
{0.317781, 0.437388, 0.841254},
{0.437388, 0.317781, 0.841254},
{0.514180, 0.167067, 0.841254},
{0.540641, 0.000000, 0.841254},
},
{
{0.909632, 0.000000, 0.415415},
{0.865111, -0.281092, 0.415415},
{0.735908, -0.534668, 0.415415},
{0.534668, -0.735908, 0.415415},
{0.281092, -0.865111, 0.415415},
{0.000000, -0.909632, 0.415415},
{-0.281092, -0.865111, 0.415415},
{-0.534668, -0.735908, 0.415415},
{-0.735908, -0.534668, 0.415415},
{-0.865111, -0.281092, 0.415415},
{-0.909632, 0.000000, 0.415415},
{-0.865111, 0.281092, 0.415415},
{-0.735908, 0.534668, 0.415415},
{-0.534668, 0.735908, 0.415415},
{-0.281092, 0.865111, 0.415415},
{0.000000, 0.909632, 0.415415},
{0.281092, 0.865111, 0.415415},
{0.534668, 0.735908, 0.415415},
{0.735908, 0.534668, 0.415415},
{0.865111, 0.281092, 0.415415},
{0.909632, 0.000000, 0.415415},
},
{
{0.989821, 0.000000, -0.142315},
{0.941376, -0.305872, -0.142315},
{0.800782, -0.581802, -0.142315},
{0.581802, -0.800782, -0.142315},
{0.305872, -0.941376, -0.142315},
{0.000000, -0.989821, -0.142315},
{-0.305872, -0.941376, -0.142315},
{-0.581802, -0.800782, -0.142315},
{-0.800782, -0.581802, -0.142315},
{-0.941376, -0.305872, -0.142315},
{-0.989821, 0.000000, -0.142315},
{-0.941376, 0.305872, -0.142315},
{-0.800782, 0.581802, -0.142315},
{-0.581802, 0.800782, -0.142315},
{-0.305872, 0.941376, -0.142315},
{0.000000, 0.989821, -0.142315},
{0.305872, 0.941376, -0.142315},
{0.581802, 0.800782, -0.142315},
{0.800782, 0.581802, -0.142315},
{0.941376, 0.305872, -0.142315},
{0.989821, 0.000000, -0.142315},
},
{
{0.755750, 0.000000, -0.654861},
{0.718761, -0.233539, -0.654861},
{0.611414, -0.444218, -0.654861},
{0.444218, -0.611414, -0.654861},
{0.233539, -0.718761, -0.654861},
{0.000000, -0.755750, -0.654861},
{-0.233539, -0.718761, -0.654861},
{-0.444218, -0.611414, -0.654861},
{-0.611414, -0.444218, -0.654861},
{-0.718761, -0.233539, -0.654861},
{-0.755750, 0.000000, -0.654861},
{-0.718761, 0.233539, -0.654861},
{-0.611414, 0.444218, -0.654861},
{-0.444218, 0.611414, -0.654861},
{-0.233539, 0.718761, -0.654861},
{0.000000, 0.755750, -0.654861},
{0.233539, 0.718761, -0.654861},
{0.444218, 0.611414, -0.654861},
{0.611414, 0.444218, -0.654861},
{0.718761, 0.233539, -0.654861},
{0.755750, 0.000000, -0.654861},
},
{
{0.281733, 0.000000, -0.959493},
{0.267944, -0.087060, -0.959493},
{0.227927, -0.165598, -0.959493},
{0.165598, -0.227927, -0.959493},
{0.087060, -0.267944, -0.959493},
{0.000000, -0.281733, -0.959493},
{-0.087060, -0.267944, -0.959493},
{-0.165598, -0.227927, -0.959493},
{-0.227927, -0.165598, -0.959493},
{-0.267944, -0.087060, -0.959493},
{-0.281733, 0.000000, -0.959493},
{-0.267944, 0.087060, -0.959493},
{-0.227927, 0.165598, -0.959493},
{-0.165598, 0.227927, -0.959493},
{-0.087060, 0.267944, -0.959493},
{0.000000, 0.281733, -0.959493},
{0.087060, 0.267944, -0.959493},
{0.165598, 0.227927, -0.959493},
{0.227927, 0.165598, -0.959493},
{0.267944, 0.087060, -0.959493},
{0.281733, 0.000000, -0.959493},
},
{
{-0.281732, 0.000000, -0.959493},
{-0.267943, 0.087060, -0.959493},
{-0.227926, 0.165598, -0.959493},
{-0.165598, 0.227926, -0.959493},
{-0.087060, 0.267943, -0.959493},
{0.000000, 0.281732, -0.959493},
{0.087060, 0.267943, -0.959493},
{0.165598, 0.227926, -0.959493},
{0.227926, 0.165598, -0.959493},
{0.267943, 0.087060, -0.959493},
{0.281732, 0.000000, -0.959493},
{0.267943, -0.087060, -0.959493},
{0.227926, -0.165598, -0.959493},
{0.165598, -0.227926, -0.959493},
{0.087060, -0.267943, -0.959493},
{0.000000, -0.281732, -0.959493},
{-0.087060, -0.267943, -0.959493},
{-0.165598, -0.227926, -0.959493},
{-0.227926, -0.165598, -0.959493},
{-0.267943, -0.087060, -0.959493},
{-0.281732, 0.000000, -0.959493},
},
{
{-0.755749, 0.000000, -0.654861},
{-0.718760, 0.233539, -0.654861},
{-0.611414, 0.444218, -0.654861},
{-0.444218, 0.611414, -0.654861},
{-0.233539, 0.718760, -0.654861},
{0.000000, 0.755749, -0.654861},
{0.233539, 0.718760, -0.654861},
{0.444218, 0.611414, -0.654861},
{0.611414, 0.444218, -0.654861},
{0.718760, 0.233539, -0.654861},
{0.755749, 0.000000, -0.654861},
{0.718760, -0.233539, -0.654861},
{0.611414, -0.444218, -0.654861},
{0.444218, -0.611414, -0.654861},
{0.233539, -0.718760, -0.654861},
{0.000000, -0.755749, -0.654861},
{-0.233539, -0.718760, -0.654861},
{-0.444218, -0.611414, -0.654861},
{-0.611414, -0.444218, -0.654861},
{-0.718760, -0.233539, -0.654861},
{-0.755749, 0.000000, -0.654861},
},
{
{-0.989821, 0.000000, -0.142315},
{-0.941376, 0.305872, -0.142315},
{-0.800782, 0.581802, -0.142315},
{-0.581802, 0.800782, -0.142315},
{-0.305872, 0.941376, -0.142315},
{0.000000, 0.989821, -0.142315},
{0.305872, 0.941376, -0.142315},
{0.581802, 0.800782, -0.142315},
{0.800782, 0.581802, -0.142315},
{0.941376, 0.305872, -0.142315},
{0.989821, 0.000000, -0.142315},
{0.941376, -0.305872, -0.142315},
{0.800782, -0.581802, -0.142315},
{0.581802, -0.800782, -0.142315},
{0.305872, -0.941376, -0.142315},
{0.000000, -0.989821, -0.142315},
{-0.305872, -0.941376, -0.142315},
{-0.581802, -0.800782, -0.142315},
{-0.800782, -0.581802, -0.142315},
{-0.941376, -0.305872, -0.142315},
{-0.989821, 0.000000, -0.142315},
},
{
{-0.909632, 0.000000, 0.415414},
{-0.865112, 0.281092, 0.415414},
{-0.735908, 0.534668, 0.415414},
{-0.534668, 0.735908, 0.415414},
{-0.281092, 0.865112, 0.415414},
{0.000000, 0.909632, 0.415414},
{0.281092, 0.865112, 0.415414},
{0.534668, 0.735908, 0.415414},
{0.735908, 0.534668, 0.415414},
{0.865112, 0.281092, 0.415414},
{0.909632, 0.000000, 0.415414},
{0.865112, -0.281092, 0.415414},
{0.735908, -0.534668, 0.415414},
{0.534668, -0.735908, 0.415414},
{0.281092, -0.865112, 0.415414},
{0.000000, -0.909632, 0.415414},
{-0.281092, -0.865112, 0.415414},
{-0.534668, -0.735908, 0.415414},
{-0.735908, -0.534668, 0.415414},
{-0.865112, -0.281092, 0.415414},
{-0.909632, 0.000000, 0.415414},
},
{
{-0.540642, 0.000000, 0.841253},
{-0.514181, 0.167067, 0.841253},
{-0.437388, 0.317781, 0.841253},
{-0.317781, 0.437388, 0.841253},
{-0.167067, 0.514181, 0.841253},
{0.000000, 0.540642, 0.841253},
{0.167067, 0.514181, 0.841253},
{0.317781, 0.437388, 0.841253},
{0.437388, 0.317781, 0.841253},
{0.514181, 0.167067, 0.841253},
{0.540642, 0.000000, 0.841253},
{0.514181, -0.167067, 0.841253},
{0.437388, -0.317781, 0.841253},
{0.317781, -0.437388, 0.841253},
{0.167067, -0.514181, 0.841253},
{0.000000, -0.540642, 0.841253},
{-0.167067, -0.514181, 0.841253},
{-0.317781, -0.437388, 0.841253},
{-0.437388, -0.317781, 0.841253},
{-0.514181, -0.167067, 0.841253},
{-0.540642, 0.000000, 0.841253},
},
{
{-0.000001, 0.000000, 1.000000},
{-0.000001, 0.000000, 1.000000},
{-0.000001, 0.000001, 1.000000},
{-0.000001, 0.000001, 1.000000},
{0.000000, 0.000001, 1.000000},
{0.000000, 0.000001, 1.000000},
{0.000000, 0.000001, 1.000000},
{0.000001, 0.000001, 1.000000},
{0.000001, 0.000001, 1.000000},
{0.000001, 0.000000, 1.000000},
{0.000001, 0.000000, 1.000000},
{0.000001, 0.000000, 1.000000},
{0.000001, -0.000001, 1.000000},
{0.000001, -0.000001, 1.000000},
{0.000000, -0.000001, 1.000000},
{0.000000, -0.000001, 1.000000},
{0.000000, -0.000001, 1.000000},
{-0.000001, -0.000001, 1.000000},
{-0.000001, -0.000001, 1.000000},
{-0.000001, 0.000000, 1.000000},
{-0.000001, 0.000000, 1.000000},
},
};
void draw_base(void) {
glCallList( MAT_HOLDER_BASE);
glBegin(GL_POLYGON);
glNormal3fv(bn[0]);
glVertex3fv(bp[0][0]);
glVertex3fv(bp[0][1]);
glVertex3fv(bp[0][3]);
glVertex3fv(bp[0][2]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[1]);
glVertex3fv(bp[0][2]);
glVertex3fv(bp[0][3]);
glVertex3fv(bp[0][5]);
glVertex3fv(bp[0][4]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[2]);
glVertex3fv(bp[0][4]);
glVertex3fv(bp[0][5]);
glVertex3fv(bp[0][7]);
glVertex3fv(bp[0][6]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[3]);
glVertex3fv(bp[0][6]);
glVertex3fv(bp[0][7]);
glVertex3fv(bp[0][1]);
glVertex3fv(bp[0][0]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(bn[4]);
glVertex3fv(bp[0][1]);
glVertex3fv(bp[1][0]);
glVertex3fv(bp[0][3]);
glVertex3fv(bp[1][2]);
glVertex3fv(bp[0][5]);
glVertex3fv(bp[1][4]);
glVertex3fv(bp[0][7]);
glVertex3fv(bp[1][6]);
glVertex3fv(bp[0][1]);
glVertex3fv(bp[1][0]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[0]);
glVertex3fv(bp[1][0]);
glVertex3fv(bp[1][1]);
glVertex3fv(bp[1][3]);
glVertex3fv(bp[1][2]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[1]);
glVertex3fv(bp[1][2]);
glVertex3fv(bp[1][3]);
glVertex3fv(bp[1][5]);
glVertex3fv(bp[1][4]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[2]);
glVertex3fv(bp[1][4]);
glVertex3fv(bp[1][5]);
glVertex3fv(bp[1][7]);
glVertex3fv(bp[1][6]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[3]);
glVertex3fv(bp[1][6]);
glVertex3fv(bp[1][7]);
glVertex3fv(bp[1][1]);
glVertex3fv(bp[1][0]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(bn[4]);
glVertex3fv(bp[1][1]);
glVertex3fv(bp[2][0]);
glVertex3fv(bp[1][3]);
glVertex3fv(bp[2][2]);
glVertex3fv(bp[1][5]);
glVertex3fv(bp[2][4]);
glVertex3fv(bp[1][7]);
glVertex3fv(bp[2][6]);
glVertex3fv(bp[1][1]);
glVertex3fv(bp[2][0]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[0]);
glVertex3fv(bp[2][0]);
glVertex3fv(bp[2][1]);
glVertex3fv(bp[2][3]);
glVertex3fv(bp[2][2]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[1]);
glVertex3fv(bp[2][2]);
glVertex3fv(bp[2][3]);
glVertex3fv(bp[2][5]);
glVertex3fv(bp[2][4]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[2]);
glVertex3fv(bp[2][4]);
glVertex3fv(bp[2][5]);
glVertex3fv(bp[2][7]);
glVertex3fv(bp[2][6]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[3]);
glVertex3fv(bp[2][6]);
glVertex3fv(bp[2][7]);
glVertex3fv(bp[2][1]);
glVertex3fv(bp[2][0]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(bn[4]);
glVertex3fv(bp[2][1]);
glVertex3fv(bp[3][0]);
glVertex3fv(bp[2][3]);
glVertex3fv(bp[3][2]);
glVertex3fv(bp[2][5]);
glVertex3fv(bp[3][4]);
glVertex3fv(bp[2][7]);
glVertex3fv(bp[3][6]);
glVertex3fv(bp[2][1]);
glVertex3fv(bp[3][0]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[2]);
glVertex3fv(bp[3][0]);
glVertex3fv(bp[3][1]);
glVertex3fv(bp[3][3]);
glVertex3fv(bp[3][2]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[3]);
glVertex3fv(bp[3][2]);
glVertex3fv(bp[3][3]);
glVertex3fv(bp[3][5]);
glVertex3fv(bp[3][4]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[0]);
glVertex3fv(bp[3][4]);
glVertex3fv(bp[3][5]);
glVertex3fv(bp[3][7]);
glVertex3fv(bp[3][6]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[1]);
glVertex3fv(bp[3][6]);
glVertex3fv(bp[3][7]);
glVertex3fv(bp[3][1]);
glVertex3fv(bp[3][0]);
glEnd();
glBegin(GL_POLYGON);
glNormal3fv(bn[4]);
glVertex3fv(bp[3][1]);
glVertex3fv(bp[3][3]);
glVertex3fv(bp[3][5]);
glVertex3fv(bp[3][7]);
glEnd();
}
void draw_torus(void) {
if( MAT_HOLDER_RINGS) {glCallList( MAT_HOLDER_RINGS); }
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(tn[0][0]); glVertex3fv(tp[0][0]);
glNormal3fv(tn[1][0]); glVertex3fv(tp[1][0]);
glNormal3fv(tn[0][1]); glVertex3fv(tp[0][1]);
glNormal3fv(tn[1][1]); glVertex3fv(tp[1][1]);
glNormal3fv(tn[0][2]); glVertex3fv(tp[0][2]);
glNormal3fv(tn[1][2]); glVertex3fv(tp[1][2]);
glNormal3fv(tn[0][3]); glVertex3fv(tp[0][3]);
glNormal3fv(tn[1][3]); glVertex3fv(tp[1][3]);
glNormal3fv(tn[0][4]); glVertex3fv(tp[0][4]);
glNormal3fv(tn[1][4]); glVertex3fv(tp[1][4]);
glNormal3fv(tn[0][5]); glVertex3fv(tp[0][5]);
glNormal3fv(tn[1][5]); glVertex3fv(tp[1][5]);
glNormal3fv(tn[0][6]); glVertex3fv(tp[0][6]);
glNormal3fv(tn[1][6]); glVertex3fv(tp[1][6]);
glNormal3fv(tn[0][7]); glVertex3fv(tp[0][7]);
glNormal3fv(tn[1][7]); glVertex3fv(tp[1][7]);
glNormal3fv(tn[0][8]); glVertex3fv(tp[0][8]);
glNormal3fv(tn[1][8]); glVertex3fv(tp[1][8]);
glNormal3fv(tn[0][9]); glVertex3fv(tp[0][9]);
glNormal3fv(tn[1][9]); glVertex3fv(tp[1][9]);
glNormal3fv(tn[0][10]); glVertex3fv(tp[0][10]);
glNormal3fv(tn[1][10]); glVertex3fv(tp[1][10]);
glNormal3fv(tn[0][11]); glVertex3fv(tp[0][11]);
glNormal3fv(tn[1][11]); glVertex3fv(tp[1][11]);
glNormal3fv(tn[0][12]); glVertex3fv(tp[0][12]);
glNormal3fv(tn[1][12]); glVertex3fv(tp[1][12]);
glNormal3fv(tn[0][13]); glVertex3fv(tp[0][13]);
glNormal3fv(tn[1][13]); glVertex3fv(tp[1][13]);
glNormal3fv(tn[0][14]); glVertex3fv(tp[0][14]);
glNormal3fv(tn[1][14]); glVertex3fv(tp[1][14]);
glNormal3fv(tn[0][15]); glVertex3fv(tp[0][15]);
glNormal3fv(tn[1][15]); glVertex3fv(tp[1][15]);
glNormal3fv(tn[0][16]); glVertex3fv(tp[0][16]);
glNormal3fv(tn[1][16]); glVertex3fv(tp[1][16]);
glNormal3fv(tn[0][17]); glVertex3fv(tp[0][17]);
glNormal3fv(tn[1][17]); glVertex3fv(tp[1][17]);
glNormal3fv(tn[0][18]); glVertex3fv(tp[0][18]);
glNormal3fv(tn[1][18]); glVertex3fv(tp[1][18]);
glNormal3fv(tn[0][19]); glVertex3fv(tp[0][19]);
glNormal3fv(tn[1][19]); glVertex3fv(tp[1][19]);
glNormal3fv(tn[0][20]); glVertex3fv(tp[0][20]);
glNormal3fv(tn[1][20]); glVertex3fv(tp[1][20]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(tn[1][0]); glVertex3fv(tp[1][0]);
glNormal3fv(tn[2][0]); glVertex3fv(tp[2][0]);
glNormal3fv(tn[1][1]); glVertex3fv(tp[1][1]);
glNormal3fv(tn[2][1]); glVertex3fv(tp[2][1]);
glNormal3fv(tn[1][2]); glVertex3fv(tp[1][2]);
glNormal3fv(tn[2][2]); glVertex3fv(tp[2][2]);
glNormal3fv(tn[1][3]); glVertex3fv(tp[1][3]);
glNormal3fv(tn[2][3]); glVertex3fv(tp[2][3]);
glNormal3fv(tn[1][4]); glVertex3fv(tp[1][4]);
glNormal3fv(tn[2][4]); glVertex3fv(tp[2][4]);
glNormal3fv(tn[1][5]); glVertex3fv(tp[1][5]);
glNormal3fv(tn[2][5]); glVertex3fv(tp[2][5]);
glNormal3fv(tn[1][6]); glVertex3fv(tp[1][6]);
glNormal3fv(tn[2][6]); glVertex3fv(tp[2][6]);
glNormal3fv(tn[1][7]); glVertex3fv(tp[1][7]);
glNormal3fv(tn[2][7]); glVertex3fv(tp[2][7]);
glNormal3fv(tn[1][8]); glVertex3fv(tp[1][8]);
glNormal3fv(tn[2][8]); glVertex3fv(tp[2][8]);
glNormal3fv(tn[1][9]); glVertex3fv(tp[1][9]);
glNormal3fv(tn[2][9]); glVertex3fv(tp[2][9]);
glNormal3fv(tn[1][10]); glVertex3fv(tp[1][10]);
glNormal3fv(tn[2][10]); glVertex3fv(tp[2][10]);
glNormal3fv(tn[1][11]); glVertex3fv(tp[1][11]);
glNormal3fv(tn[2][11]); glVertex3fv(tp[2][11]);
glNormal3fv(tn[1][12]); glVertex3fv(tp[1][12]);
glNormal3fv(tn[2][12]); glVertex3fv(tp[2][12]);
glNormal3fv(tn[1][13]); glVertex3fv(tp[1][13]);
glNormal3fv(tn[2][13]); glVertex3fv(tp[2][13]);
glNormal3fv(tn[1][14]); glVertex3fv(tp[1][14]);
glNormal3fv(tn[2][14]); glVertex3fv(tp[2][14]);
glNormal3fv(tn[1][15]); glVertex3fv(tp[1][15]);
glNormal3fv(tn[2][15]); glVertex3fv(tp[2][15]);
glNormal3fv(tn[1][16]); glVertex3fv(tp[1][16]);
glNormal3fv(tn[2][16]); glVertex3fv(tp[2][16]);
glNormal3fv(tn[1][17]); glVertex3fv(tp[1][17]);
glNormal3fv(tn[2][17]); glVertex3fv(tp[2][17]);
glNormal3fv(tn[1][18]); glVertex3fv(tp[1][18]);
glNormal3fv(tn[2][18]); glVertex3fv(tp[2][18]);
glNormal3fv(tn[1][19]); glVertex3fv(tp[1][19]);
glNormal3fv(tn[2][19]); glVertex3fv(tp[2][19]);
glNormal3fv(tn[1][20]); glVertex3fv(tp[1][20]);
glNormal3fv(tn[2][20]); glVertex3fv(tp[2][20]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(tn[2][0]); glVertex3fv(tp[2][0]);
glNormal3fv(tn[3][0]); glVertex3fv(tp[3][0]);
glNormal3fv(tn[2][1]); glVertex3fv(tp[2][1]);
glNormal3fv(tn[3][1]); glVertex3fv(tp[3][1]);
glNormal3fv(tn[2][2]); glVertex3fv(tp[2][2]);
glNormal3fv(tn[3][2]); glVertex3fv(tp[3][2]);
glNormal3fv(tn[2][3]); glVertex3fv(tp[2][3]);
glNormal3fv(tn[3][3]); glVertex3fv(tp[3][3]);
glNormal3fv(tn[2][4]); glVertex3fv(tp[2][4]);
glNormal3fv(tn[3][4]); glVertex3fv(tp[3][4]);
glNormal3fv(tn[2][5]); glVertex3fv(tp[2][5]);
glNormal3fv(tn[3][5]); glVertex3fv(tp[3][5]);
glNormal3fv(tn[2][6]); glVertex3fv(tp[2][6]);
glNormal3fv(tn[3][6]); glVertex3fv(tp[3][6]);
glNormal3fv(tn[2][7]); glVertex3fv(tp[2][7]);
glNormal3fv(tn[3][7]); glVertex3fv(tp[3][7]);
glNormal3fv(tn[2][8]); glVertex3fv(tp[2][8]);
glNormal3fv(tn[3][8]); glVertex3fv(tp[3][8]);
glNormal3fv(tn[2][9]); glVertex3fv(tp[2][9]);
glNormal3fv(tn[3][9]); glVertex3fv(tp[3][9]);
glNormal3fv(tn[2][10]); glVertex3fv(tp[2][10]);
glNormal3fv(tn[3][10]); glVertex3fv(tp[3][10]);
glNormal3fv(tn[2][11]); glVertex3fv(tp[2][11]);
glNormal3fv(tn[3][11]); glVertex3fv(tp[3][11]);
glNormal3fv(tn[2][12]); glVertex3fv(tp[2][12]);
glNormal3fv(tn[3][12]); glVertex3fv(tp[3][12]);
glNormal3fv(tn[2][13]); glVertex3fv(tp[2][13]);
glNormal3fv(tn[3][13]); glVertex3fv(tp[3][13]);
glNormal3fv(tn[2][14]); glVertex3fv(tp[2][14]);
glNormal3fv(tn[3][14]); glVertex3fv(tp[3][14]);
glNormal3fv(tn[2][15]); glVertex3fv(tp[2][15]);
glNormal3fv(tn[3][15]); glVertex3fv(tp[3][15]);
glNormal3fv(tn[2][16]); glVertex3fv(tp[2][16]);
glNormal3fv(tn[3][16]); glVertex3fv(tp[3][16]);
glNormal3fv(tn[2][17]); glVertex3fv(tp[2][17]);
glNormal3fv(tn[3][17]); glVertex3fv(tp[3][17]);
glNormal3fv(tn[2][18]); glVertex3fv(tp[2][18]);
glNormal3fv(tn[3][18]); glVertex3fv(tp[3][18]);
glNormal3fv(tn[2][19]); glVertex3fv(tp[2][19]);
glNormal3fv(tn[3][19]); glVertex3fv(tp[3][19]);
glNormal3fv(tn[2][20]); glVertex3fv(tp[2][20]);
glNormal3fv(tn[3][20]); glVertex3fv(tp[3][20]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(tn[3][0]); glVertex3fv(tp[3][0]);
glNormal3fv(tn[4][0]); glVertex3fv(tp[4][0]);
glNormal3fv(tn[3][1]); glVertex3fv(tp[3][1]);
glNormal3fv(tn[4][1]); glVertex3fv(tp[4][1]);
glNormal3fv(tn[3][2]); glVertex3fv(tp[3][2]);
glNormal3fv(tn[4][2]); glVertex3fv(tp[4][2]);
glNormal3fv(tn[3][3]); glVertex3fv(tp[3][3]);
glNormal3fv(tn[4][3]); glVertex3fv(tp[4][3]);
glNormal3fv(tn[3][4]); glVertex3fv(tp[3][4]);
glNormal3fv(tn[4][4]); glVertex3fv(tp[4][4]);
glNormal3fv(tn[3][5]); glVertex3fv(tp[3][5]);
glNormal3fv(tn[4][5]); glVertex3fv(tp[4][5]);
glNormal3fv(tn[3][6]); glVertex3fv(tp[3][6]);
glNormal3fv(tn[4][6]); glVertex3fv(tp[4][6]);
glNormal3fv(tn[3][7]); glVertex3fv(tp[3][7]);
glNormal3fv(tn[4][7]); glVertex3fv(tp[4][7]);
glNormal3fv(tn[3][8]); glVertex3fv(tp[3][8]);
glNormal3fv(tn[4][8]); glVertex3fv(tp[4][8]);
glNormal3fv(tn[3][9]); glVertex3fv(tp[3][9]);
glNormal3fv(tn[4][9]); glVertex3fv(tp[4][9]);
glNormal3fv(tn[3][10]); glVertex3fv(tp[3][10]);
glNormal3fv(tn[4][10]); glVertex3fv(tp[4][10]);
glNormal3fv(tn[3][11]); glVertex3fv(tp[3][11]);
glNormal3fv(tn[4][11]); glVertex3fv(tp[4][11]);
glNormal3fv(tn[3][12]); glVertex3fv(tp[3][12]);
glNormal3fv(tn[4][12]); glVertex3fv(tp[4][12]);
glNormal3fv(tn[3][13]); glVertex3fv(tp[3][13]);
glNormal3fv(tn[4][13]); glVertex3fv(tp[4][13]);
glNormal3fv(tn[3][14]); glVertex3fv(tp[3][14]);
glNormal3fv(tn[4][14]); glVertex3fv(tp[4][14]);
glNormal3fv(tn[3][15]); glVertex3fv(tp[3][15]);
glNormal3fv(tn[4][15]); glVertex3fv(tp[4][15]);
glNormal3fv(tn[3][16]); glVertex3fv(tp[3][16]);
glNormal3fv(tn[4][16]); glVertex3fv(tp[4][16]);
glNormal3fv(tn[3][17]); glVertex3fv(tp[3][17]);
glNormal3fv(tn[4][17]); glVertex3fv(tp[4][17]);
glNormal3fv(tn[3][18]); glVertex3fv(tp[3][18]);
glNormal3fv(tn[4][18]); glVertex3fv(tp[4][18]);
glNormal3fv(tn[3][19]); glVertex3fv(tp[3][19]);
glNormal3fv(tn[4][19]); glVertex3fv(tp[4][19]);
glNormal3fv(tn[3][20]); glVertex3fv(tp[3][20]);
glNormal3fv(tn[4][20]); glVertex3fv(tp[4][20]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(tn[4][0]); glVertex3fv(tp[4][0]);
glNormal3fv(tn[5][0]); glVertex3fv(tp[5][0]);
glNormal3fv(tn[4][1]); glVertex3fv(tp[4][1]);
glNormal3fv(tn[5][1]); glVertex3fv(tp[5][1]);
glNormal3fv(tn[4][2]); glVertex3fv(tp[4][2]);
glNormal3fv(tn[5][2]); glVertex3fv(tp[5][2]);
glNormal3fv(tn[4][3]); glVertex3fv(tp[4][3]);
glNormal3fv(tn[5][3]); glVertex3fv(tp[5][3]);
glNormal3fv(tn[4][4]); glVertex3fv(tp[4][4]);
glNormal3fv(tn[5][4]); glVertex3fv(tp[5][4]);
glNormal3fv(tn[4][5]); glVertex3fv(tp[4][5]);
glNormal3fv(tn[5][5]); glVertex3fv(tp[5][5]);
glNormal3fv(tn[4][6]); glVertex3fv(tp[4][6]);
glNormal3fv(tn[5][6]); glVertex3fv(tp[5][6]);
glNormal3fv(tn[4][7]); glVertex3fv(tp[4][7]);
glNormal3fv(tn[5][7]); glVertex3fv(tp[5][7]);
glNormal3fv(tn[4][8]); glVertex3fv(tp[4][8]);
glNormal3fv(tn[5][8]); glVertex3fv(tp[5][8]);
glNormal3fv(tn[4][9]); glVertex3fv(tp[4][9]);
glNormal3fv(tn[5][9]); glVertex3fv(tp[5][9]);
glNormal3fv(tn[4][10]); glVertex3fv(tp[4][10]);
glNormal3fv(tn[5][10]); glVertex3fv(tp[5][10]);
glNormal3fv(tn[4][11]); glVertex3fv(tp[4][11]);
glNormal3fv(tn[5][11]); glVertex3fv(tp[5][11]);
glNormal3fv(tn[4][12]); glVertex3fv(tp[4][12]);
glNormal3fv(tn[5][12]); glVertex3fv(tp[5][12]);
glNormal3fv(tn[4][13]); glVertex3fv(tp[4][13]);
glNormal3fv(tn[5][13]); glVertex3fv(tp[5][13]);
glNormal3fv(tn[4][14]); glVertex3fv(tp[4][14]);
glNormal3fv(tn[5][14]); glVertex3fv(tp[5][14]);
glNormal3fv(tn[4][15]); glVertex3fv(tp[4][15]);
glNormal3fv(tn[5][15]); glVertex3fv(tp[5][15]);
glNormal3fv(tn[4][16]); glVertex3fv(tp[4][16]);
glNormal3fv(tn[5][16]); glVertex3fv(tp[5][16]);
glNormal3fv(tn[4][17]); glVertex3fv(tp[4][17]);
glNormal3fv(tn[5][17]); glVertex3fv(tp[5][17]);
glNormal3fv(tn[4][18]); glVertex3fv(tp[4][18]);
glNormal3fv(tn[5][18]); glVertex3fv(tp[5][18]);
glNormal3fv(tn[4][19]); glVertex3fv(tp[4][19]);
glNormal3fv(tn[5][19]); glVertex3fv(tp[5][19]);
glNormal3fv(tn[4][20]); glVertex3fv(tp[4][20]);
glNormal3fv(tn[5][20]); glVertex3fv(tp[5][20]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(tn[5][0]); glVertex3fv(tp[5][0]);
glNormal3fv(tn[6][0]); glVertex3fv(tp[6][0]);
glNormal3fv(tn[5][1]); glVertex3fv(tp[5][1]);
glNormal3fv(tn[6][1]); glVertex3fv(tp[6][1]);
glNormal3fv(tn[5][2]); glVertex3fv(tp[5][2]);
glNormal3fv(tn[6][2]); glVertex3fv(tp[6][2]);
glNormal3fv(tn[5][3]); glVertex3fv(tp[5][3]);
glNormal3fv(tn[6][3]); glVertex3fv(tp[6][3]);
glNormal3fv(tn[5][4]); glVertex3fv(tp[5][4]);
glNormal3fv(tn[6][4]); glVertex3fv(tp[6][4]);
glNormal3fv(tn[5][5]); glVertex3fv(tp[5][5]);
glNormal3fv(tn[6][5]); glVertex3fv(tp[6][5]);
glNormal3fv(tn[5][6]); glVertex3fv(tp[5][6]);
glNormal3fv(tn[6][6]); glVertex3fv(tp[6][6]);
glNormal3fv(tn[5][7]); glVertex3fv(tp[5][7]);
glNormal3fv(tn[6][7]); glVertex3fv(tp[6][7]);
glNormal3fv(tn[5][8]); glVertex3fv(tp[5][8]);
glNormal3fv(tn[6][8]); glVertex3fv(tp[6][8]);
glNormal3fv(tn[5][9]); glVertex3fv(tp[5][9]);
glNormal3fv(tn[6][9]); glVertex3fv(tp[6][9]);
glNormal3fv(tn[5][10]); glVertex3fv(tp[5][10]);
glNormal3fv(tn[6][10]); glVertex3fv(tp[6][10]);
glNormal3fv(tn[5][11]); glVertex3fv(tp[5][11]);
glNormal3fv(tn[6][11]); glVertex3fv(tp[6][11]);
glNormal3fv(tn[5][12]); glVertex3fv(tp[5][12]);
glNormal3fv(tn[6][12]); glVertex3fv(tp[6][12]);
glNormal3fv(tn[5][13]); glVertex3fv(tp[5][13]);
glNormal3fv(tn[6][13]); glVertex3fv(tp[6][13]);
glNormal3fv(tn[5][14]); glVertex3fv(tp[5][14]);
glNormal3fv(tn[6][14]); glVertex3fv(tp[6][14]);
glNormal3fv(tn[5][15]); glVertex3fv(tp[5][15]);
glNormal3fv(tn[6][15]); glVertex3fv(tp[6][15]);
glNormal3fv(tn[5][16]); glVertex3fv(tp[5][16]);
glNormal3fv(tn[6][16]); glVertex3fv(tp[6][16]);
glNormal3fv(tn[5][17]); glVertex3fv(tp[5][17]);
glNormal3fv(tn[6][17]); glVertex3fv(tp[6][17]);
glNormal3fv(tn[5][18]); glVertex3fv(tp[5][18]);
glNormal3fv(tn[6][18]); glVertex3fv(tp[6][18]);
glNormal3fv(tn[5][19]); glVertex3fv(tp[5][19]);
glNormal3fv(tn[6][19]); glVertex3fv(tp[6][19]);
glNormal3fv(tn[5][20]); glVertex3fv(tp[5][20]);
glNormal3fv(tn[6][20]); glVertex3fv(tp[6][20]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(tn[6][0]); glVertex3fv(tp[6][0]);
glNormal3fv(tn[7][0]); glVertex3fv(tp[7][0]);
glNormal3fv(tn[6][1]); glVertex3fv(tp[6][1]);
glNormal3fv(tn[7][1]); glVertex3fv(tp[7][1]);
glNormal3fv(tn[6][2]); glVertex3fv(tp[6][2]);
glNormal3fv(tn[7][2]); glVertex3fv(tp[7][2]);
glNormal3fv(tn[6][3]); glVertex3fv(tp[6][3]);
glNormal3fv(tn[7][3]); glVertex3fv(tp[7][3]);
glNormal3fv(tn[6][4]); glVertex3fv(tp[6][4]);
glNormal3fv(tn[7][4]); glVertex3fv(tp[7][4]);
glNormal3fv(tn[6][5]); glVertex3fv(tp[6][5]);
glNormal3fv(tn[7][5]); glVertex3fv(tp[7][5]);
glNormal3fv(tn[6][6]); glVertex3fv(tp[6][6]);
glNormal3fv(tn[7][6]); glVertex3fv(tp[7][6]);
glNormal3fv(tn[6][7]); glVertex3fv(tp[6][7]);
glNormal3fv(tn[7][7]); glVertex3fv(tp[7][7]);
glNormal3fv(tn[6][8]); glVertex3fv(tp[6][8]);
glNormal3fv(tn[7][8]); glVertex3fv(tp[7][8]);
glNormal3fv(tn[6][9]); glVertex3fv(tp[6][9]);
glNormal3fv(tn[7][9]); glVertex3fv(tp[7][9]);
glNormal3fv(tn[6][10]); glVertex3fv(tp[6][10]);
glNormal3fv(tn[7][10]); glVertex3fv(tp[7][10]);
glNormal3fv(tn[6][11]); glVertex3fv(tp[6][11]);
glNormal3fv(tn[7][11]); glVertex3fv(tp[7][11]);
glNormal3fv(tn[6][12]); glVertex3fv(tp[6][12]);
glNormal3fv(tn[7][12]); glVertex3fv(tp[7][12]);
glNormal3fv(tn[6][13]); glVertex3fv(tp[6][13]);
glNormal3fv(tn[7][13]); glVertex3fv(tp[7][13]);
glNormal3fv(tn[6][14]); glVertex3fv(tp[6][14]);
glNormal3fv(tn[7][14]); glVertex3fv(tp[7][14]);
glNormal3fv(tn[6][15]); glVertex3fv(tp[6][15]);
glNormal3fv(tn[7][15]); glVertex3fv(tp[7][15]);
glNormal3fv(tn[6][16]); glVertex3fv(tp[6][16]);
glNormal3fv(tn[7][16]); glVertex3fv(tp[7][16]);
glNormal3fv(tn[6][17]); glVertex3fv(tp[6][17]);
glNormal3fv(tn[7][17]); glVertex3fv(tp[7][17]);
glNormal3fv(tn[6][18]); glVertex3fv(tp[6][18]);
glNormal3fv(tn[7][18]); glVertex3fv(tp[7][18]);
glNormal3fv(tn[6][19]); glVertex3fv(tp[6][19]);
glNormal3fv(tn[7][19]); glVertex3fv(tp[7][19]);
glNormal3fv(tn[6][20]); glVertex3fv(tp[6][20]);
glNormal3fv(tn[7][20]); glVertex3fv(tp[7][20]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(tn[7][0]); glVertex3fv(tp[7][0]);
glNormal3fv(tn[8][0]); glVertex3fv(tp[8][0]);
glNormal3fv(tn[7][1]); glVertex3fv(tp[7][1]);
glNormal3fv(tn[8][1]); glVertex3fv(tp[8][1]);
glNormal3fv(tn[7][2]); glVertex3fv(tp[7][2]);
glNormal3fv(tn[8][2]); glVertex3fv(tp[8][2]);
glNormal3fv(tn[7][3]); glVertex3fv(tp[7][3]);
glNormal3fv(tn[8][3]); glVertex3fv(tp[8][3]);
glNormal3fv(tn[7][4]); glVertex3fv(tp[7][4]);
glNormal3fv(tn[8][4]); glVertex3fv(tp[8][4]);
glNormal3fv(tn[7][5]); glVertex3fv(tp[7][5]);
glNormal3fv(tn[8][5]); glVertex3fv(tp[8][5]);
glNormal3fv(tn[7][6]); glVertex3fv(tp[7][6]);
glNormal3fv(tn[8][6]); glVertex3fv(tp[8][6]);
glNormal3fv(tn[7][7]); glVertex3fv(tp[7][7]);
glNormal3fv(tn[8][7]); glVertex3fv(tp[8][7]);
glNormal3fv(tn[7][8]); glVertex3fv(tp[7][8]);
glNormal3fv(tn[8][8]); glVertex3fv(tp[8][8]);
glNormal3fv(tn[7][9]); glVertex3fv(tp[7][9]);
glNormal3fv(tn[8][9]); glVertex3fv(tp[8][9]);
glNormal3fv(tn[7][10]); glVertex3fv(tp[7][10]);
glNormal3fv(tn[8][10]); glVertex3fv(tp[8][10]);
glNormal3fv(tn[7][11]); glVertex3fv(tp[7][11]);
glNormal3fv(tn[8][11]); glVertex3fv(tp[8][11]);
glNormal3fv(tn[7][12]); glVertex3fv(tp[7][12]);
glNormal3fv(tn[8][12]); glVertex3fv(tp[8][12]);
glNormal3fv(tn[7][13]); glVertex3fv(tp[7][13]);
glNormal3fv(tn[8][13]); glVertex3fv(tp[8][13]);
glNormal3fv(tn[7][14]); glVertex3fv(tp[7][14]);
glNormal3fv(tn[8][14]); glVertex3fv(tp[8][14]);
glNormal3fv(tn[7][15]); glVertex3fv(tp[7][15]);
glNormal3fv(tn[8][15]); glVertex3fv(tp[8][15]);
glNormal3fv(tn[7][16]); glVertex3fv(tp[7][16]);
glNormal3fv(tn[8][16]); glVertex3fv(tp[8][16]);
glNormal3fv(tn[7][17]); glVertex3fv(tp[7][17]);
glNormal3fv(tn[8][17]); glVertex3fv(tp[8][17]);
glNormal3fv(tn[7][18]); glVertex3fv(tp[7][18]);
glNormal3fv(tn[8][18]); glVertex3fv(tp[8][18]);
glNormal3fv(tn[7][19]); glVertex3fv(tp[7][19]);
glNormal3fv(tn[8][19]); glVertex3fv(tp[8][19]);
glNormal3fv(tn[7][20]); glVertex3fv(tp[7][20]);
glNormal3fv(tn[8][20]); glVertex3fv(tp[8][20]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(tn[8][0]); glVertex3fv(tp[8][0]);
glNormal3fv(tn[9][0]); glVertex3fv(tp[9][0]);
glNormal3fv(tn[8][1]); glVertex3fv(tp[8][1]);
glNormal3fv(tn[9][1]); glVertex3fv(tp[9][1]);
glNormal3fv(tn[8][2]); glVertex3fv(tp[8][2]);
glNormal3fv(tn[9][2]); glVertex3fv(tp[9][2]);
glNormal3fv(tn[8][3]); glVertex3fv(tp[8][3]);
glNormal3fv(tn[9][3]); glVertex3fv(tp[9][3]);
glNormal3fv(tn[8][4]); glVertex3fv(tp[8][4]);
glNormal3fv(tn[9][4]); glVertex3fv(tp[9][4]);
glNormal3fv(tn[8][5]); glVertex3fv(tp[8][5]);
glNormal3fv(tn[9][5]); glVertex3fv(tp[9][5]);
glNormal3fv(tn[8][6]); glVertex3fv(tp[8][6]);
glNormal3fv(tn[9][6]); glVertex3fv(tp[9][6]);
glNormal3fv(tn[8][7]); glVertex3fv(tp[8][7]);
glNormal3fv(tn[9][7]); glVertex3fv(tp[9][7]);
glNormal3fv(tn[8][8]); glVertex3fv(tp[8][8]);
glNormal3fv(tn[9][8]); glVertex3fv(tp[9][8]);
glNormal3fv(tn[8][9]); glVertex3fv(tp[8][9]);
glNormal3fv(tn[9][9]); glVertex3fv(tp[9][9]);
glNormal3fv(tn[8][10]); glVertex3fv(tp[8][10]);
glNormal3fv(tn[9][10]); glVertex3fv(tp[9][10]);
glNormal3fv(tn[8][11]); glVertex3fv(tp[8][11]);
glNormal3fv(tn[9][11]); glVertex3fv(tp[9][11]);
glNormal3fv(tn[8][12]); glVertex3fv(tp[8][12]);
glNormal3fv(tn[9][12]); glVertex3fv(tp[9][12]);
glNormal3fv(tn[8][13]); glVertex3fv(tp[8][13]);
glNormal3fv(tn[9][13]); glVertex3fv(tp[9][13]);
glNormal3fv(tn[8][14]); glVertex3fv(tp[8][14]);
glNormal3fv(tn[9][14]); glVertex3fv(tp[9][14]);
glNormal3fv(tn[8][15]); glVertex3fv(tp[8][15]);
glNormal3fv(tn[9][15]); glVertex3fv(tp[9][15]);
glNormal3fv(tn[8][16]); glVertex3fv(tp[8][16]);
glNormal3fv(tn[9][16]); glVertex3fv(tp[9][16]);
glNormal3fv(tn[8][17]); glVertex3fv(tp[8][17]);
glNormal3fv(tn[9][17]); glVertex3fv(tp[9][17]);
glNormal3fv(tn[8][18]); glVertex3fv(tp[8][18]);
glNormal3fv(tn[9][18]); glVertex3fv(tp[9][18]);
glNormal3fv(tn[8][19]); glVertex3fv(tp[8][19]);
glNormal3fv(tn[9][19]); glVertex3fv(tp[9][19]);
glNormal3fv(tn[8][20]); glVertex3fv(tp[8][20]);
glNormal3fv(tn[9][20]); glVertex3fv(tp[9][20]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(tn[9][0]); glVertex3fv(tp[9][0]);
glNormal3fv(tn[10][0]); glVertex3fv(tp[10][0]);
glNormal3fv(tn[9][1]); glVertex3fv(tp[9][1]);
glNormal3fv(tn[10][1]); glVertex3fv(tp[10][1]);
glNormal3fv(tn[9][2]); glVertex3fv(tp[9][2]);
glNormal3fv(tn[10][2]); glVertex3fv(tp[10][2]);
glNormal3fv(tn[9][3]); glVertex3fv(tp[9][3]);
glNormal3fv(tn[10][3]); glVertex3fv(tp[10][3]);
glNormal3fv(tn[9][4]); glVertex3fv(tp[9][4]);
glNormal3fv(tn[10][4]); glVertex3fv(tp[10][4]);
glNormal3fv(tn[9][5]); glVertex3fv(tp[9][5]);
glNormal3fv(tn[10][5]); glVertex3fv(tp[10][5]);
glNormal3fv(tn[9][6]); glVertex3fv(tp[9][6]);
glNormal3fv(tn[10][6]); glVertex3fv(tp[10][6]);
glNormal3fv(tn[9][7]); glVertex3fv(tp[9][7]);
glNormal3fv(tn[10][7]); glVertex3fv(tp[10][7]);
glNormal3fv(tn[9][8]); glVertex3fv(tp[9][8]);
glNormal3fv(tn[10][8]); glVertex3fv(tp[10][8]);
glNormal3fv(tn[9][9]); glVertex3fv(tp[9][9]);
glNormal3fv(tn[10][9]); glVertex3fv(tp[10][9]);
glNormal3fv(tn[9][10]); glVertex3fv(tp[9][10]);
glNormal3fv(tn[10][10]); glVertex3fv(tp[10][10]);
glNormal3fv(tn[9][11]); glVertex3fv(tp[9][11]);
glNormal3fv(tn[10][11]); glVertex3fv(tp[10][11]);
glNormal3fv(tn[9][12]); glVertex3fv(tp[9][12]);
glNormal3fv(tn[10][12]); glVertex3fv(tp[10][12]);
glNormal3fv(tn[9][13]); glVertex3fv(tp[9][13]);
glNormal3fv(tn[10][13]); glVertex3fv(tp[10][13]);
glNormal3fv(tn[9][14]); glVertex3fv(tp[9][14]);
glNormal3fv(tn[10][14]); glVertex3fv(tp[10][14]);
glNormal3fv(tn[9][15]); glVertex3fv(tp[9][15]);
glNormal3fv(tn[10][15]); glVertex3fv(tp[10][15]);
glNormal3fv(tn[9][16]); glVertex3fv(tp[9][16]);
glNormal3fv(tn[10][16]); glVertex3fv(tp[10][16]);
glNormal3fv(tn[9][17]); glVertex3fv(tp[9][17]);
glNormal3fv(tn[10][17]); glVertex3fv(tp[10][17]);
glNormal3fv(tn[9][18]); glVertex3fv(tp[9][18]);
glNormal3fv(tn[10][18]); glVertex3fv(tp[10][18]);
glNormal3fv(tn[9][19]); glVertex3fv(tp[9][19]);
glNormal3fv(tn[10][19]); glVertex3fv(tp[10][19]);
glNormal3fv(tn[9][20]); glVertex3fv(tp[9][20]);
glNormal3fv(tn[10][20]); glVertex3fv(tp[10][20]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(tn[10][0]); glVertex3fv(tp[10][0]);
glNormal3fv(tn[11][0]); glVertex3fv(tp[11][0]);
glNormal3fv(tn[10][1]); glVertex3fv(tp[10][1]);
glNormal3fv(tn[11][1]); glVertex3fv(tp[11][1]);
glNormal3fv(tn[10][2]); glVertex3fv(tp[10][2]);
glNormal3fv(tn[11][2]); glVertex3fv(tp[11][2]);
glNormal3fv(tn[10][3]); glVertex3fv(tp[10][3]);
glNormal3fv(tn[11][3]); glVertex3fv(tp[11][3]);
glNormal3fv(tn[10][4]); glVertex3fv(tp[10][4]);
glNormal3fv(tn[11][4]); glVertex3fv(tp[11][4]);
glNormal3fv(tn[10][5]); glVertex3fv(tp[10][5]);
glNormal3fv(tn[11][5]); glVertex3fv(tp[11][5]);
glNormal3fv(tn[10][6]); glVertex3fv(tp[10][6]);
glNormal3fv(tn[11][6]); glVertex3fv(tp[11][6]);
glNormal3fv(tn[10][7]); glVertex3fv(tp[10][7]);
glNormal3fv(tn[11][7]); glVertex3fv(tp[11][7]);
glNormal3fv(tn[10][8]); glVertex3fv(tp[10][8]);
glNormal3fv(tn[11][8]); glVertex3fv(tp[11][8]);
glNormal3fv(tn[10][9]); glVertex3fv(tp[10][9]);
glNormal3fv(tn[11][9]); glVertex3fv(tp[11][9]);
glNormal3fv(tn[10][10]); glVertex3fv(tp[10][10]);
glNormal3fv(tn[11][10]); glVertex3fv(tp[11][10]);
glNormal3fv(tn[10][11]); glVertex3fv(tp[10][11]);
glNormal3fv(tn[11][11]); glVertex3fv(tp[11][11]);
glNormal3fv(tn[10][12]); glVertex3fv(tp[10][12]);
glNormal3fv(tn[11][12]); glVertex3fv(tp[11][12]);
glNormal3fv(tn[10][13]); glVertex3fv(tp[10][13]);
glNormal3fv(tn[11][13]); glVertex3fv(tp[11][13]);
glNormal3fv(tn[10][14]); glVertex3fv(tp[10][14]);
glNormal3fv(tn[11][14]); glVertex3fv(tp[11][14]);
glNormal3fv(tn[10][15]); glVertex3fv(tp[10][15]);
glNormal3fv(tn[11][15]); glVertex3fv(tp[11][15]);
glNormal3fv(tn[10][16]); glVertex3fv(tp[10][16]);
glNormal3fv(tn[11][16]); glVertex3fv(tp[11][16]);
glNormal3fv(tn[10][17]); glVertex3fv(tp[10][17]);
glNormal3fv(tn[11][17]); glVertex3fv(tp[11][17]);
glNormal3fv(tn[10][18]); glVertex3fv(tp[10][18]);
glNormal3fv(tn[11][18]); glVertex3fv(tp[11][18]);
glNormal3fv(tn[10][19]); glVertex3fv(tp[10][19]);
glNormal3fv(tn[11][19]); glVertex3fv(tp[11][19]);
glNormal3fv(tn[10][20]); glVertex3fv(tp[10][20]);
glNormal3fv(tn[11][20]); glVertex3fv(tp[11][20]);
glEnd();
}
void draw_holder(void) {
if( MAT_HOLDER_RINGS) {
glCallList( MAT_HOLDER_RINGS);
}
glPushMatrix();
draw_base();
glTranslatef(0.0, 0.0, 20.000000);
draw_torus();
glTranslatef(0.0, 0.0, 5.000000);
draw_torus();
glTranslatef(0.0, 0.0, 5.000000);
draw_torus();
glPopMatrix();
}